package com.hgkj.cloud.base.scheme.table;

import com.hgkj.cloud.base.scheme.ClsAnswerRequest;
import com.hgkj.cloud.base.scheme.ClsAnswerResult;
import com.hgkj.cloud.base.scheme.ClsScore;

import java.util.Map;

/**
 * 十五、十六、康奈尔医学指数(男)（Cmi）共195题，康奈尔医学指数(女)（Cmi）共195题，男女题目应该是略有区别的
 */
public class Table15 extends AbstractTable implements TableCalculate{
    String code = "Cmi";

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public ClsAnswerResult calc(ClsAnswerRequest answer) {
        return null;
    }

    @Override
    public String[] report(Map map) {
        return null;
    }

    private static ClsAnswerResult GetCmiFactorScore(ClsAnswerRequest answer) {
        ClsAnswerResult result = new ClsAnswerResult();
        result.setMessage("");
        result.setType(answer.getType());
        result.setUuid(answer.getUuid());
        try {
            // 1正确题数
            int MAX_NUM = 195;
            // 1总分，2M-R分值，3眼和耳，4呼吸系统，5心血管系统，6消化系统，7肌肉骨骼系统，8皮肤，9神经系统，10生殖泌尿系统，
            // 11疲劳感，12既往健康状况，13既往病史，14习惯，15不适应，16抑郁，17焦虑，18敏感，19愤怒，20紧张
            int intI;
            String[] strAnswer_c = answer.getAnswer().split(g_sChar);
            if (strAnswer_c.length > 1) {
                for (intI = 1; intI < strAnswer_c.length; intI++) {
                    strAnswer_c[intI] = strAnswer_c[intI].trim();
                }
            }

            String[] sAnswer = strAnswer_c[0].toString().split(g_nChar);

            if (sAnswer.length != MAX_NUM) {
                result.setMessage("答案数量不符！");
                return result;
            }

            int i, intLocal;

            // 共一组1,0
            // 前两个因子为特殊记分
            int[] intNumberA = { 9, 27, 40, 63, 71, 78, 96, 107, 114, 123, 138, 144, 156, 162, 171, 177, 186, 195 };

            int[] vFactorA = new int[20]; // 实际为20个因子
            for (i = 0; i < vFactorA.length; i++) {
                vFactorA[i] = 0;
            }

            // 原始分
            intLocal = 0;
            for (i = 0; i < sAnswer.length; i++) {
                if (i >= intNumberA[intLocal]) {
                    intLocal += 1;
                }
                vFactorA[intLocal + 2] += 2 - Integer.valueOf(sAnswer[i]);
            }

            // 1总分
            for (i = 2; i < 20; i++) {
                vFactorA[0] += vFactorA[i];
            }
            // 2M-R分值
            vFactorA[1] = vFactorA[14] + vFactorA[15] + vFactorA[16] + vFactorA[17] + vFactorA[18] + vFactorA[19];

            ClsScore.Cmi cmi = new ClsScore.Cmi();

            cmi.setTotal_o(vFactorA[0]);
            cmi.setMR_o(vFactorA[1]);
            cmi.setYhe_o(vFactorA[2]);
            cmi.setHxxt_o(vFactorA[3]);
            cmi.setXxgxt_o(vFactorA[4]);
            cmi.setXhxt_o(vFactorA[5]);
            cmi.setJrgg_o(vFactorA[6]);
            cmi.setPf_o(vFactorA[7]);
            cmi.setSjxt_o(vFactorA[8]);
            cmi.setSzmn_o(vFactorA[9]);
            cmi.setPlg_o(vFactorA[10]);
            cmi.setJwjk_o(vFactorA[11]);
            cmi.setJwbs_o(vFactorA[12]);
            cmi.setXg_o(vFactorA[13]);
            cmi.setBsy_o(vFactorA[14]);
            cmi.setYy_o(vFactorA[15]);
            cmi.setJl_o(vFactorA[16]);
            cmi.setMg_o(vFactorA[17]);
            cmi.setFn_o(vFactorA[18]);
            cmi.setJz_o(vFactorA[19]);

            result.setObject(cmi);
            return result;

        } catch (ArithmeticException e) {
            result.setMessage(e.toString());
            return result;
        }
    }

}
